#C 语言标准库头文件 stdlib.h
这个头文件提供 常用的基本功能。例如内存管理,程序终止等。
#常量
| 常量 | 标准 | 说明 |
|---|---|---|
EXIT_SUCCESS | C89 | 表示程序正确执行,通常为 0 |
EXIT_FAILURE | C89 | 表示程序执行失败,通常为 1 |
#函数
| 程序退出 | 标准 | 说明 |
|---|---|---|
| abort | C89 | 异常中止 |
| exit | C89 | 正常退出 |
| atexit | C89 | 注册 exit 退出前调用的函数 |
| _Exit | C99 | 正常退出 |
| quick_exit | C11 | 快速退出 |
| at_quick_exit | C11 | 注册 quick_exit 退出前调用的函数 |
| 内存管理 | 标准 | 说明 |
|---|---|---|
| malloc | C89 | 分配内存 |
| free | C89 | 释放内存 |
| realloc | C89 | 重新分配内存 |
| calloc | C89 | 分配一组内存 |
| aligned_alloc | C11 | 分配对齐的内存 |
| 数学计算 | 标准 | 说明 |
|---|---|---|
| abs | C89 | 计算 int 的绝对值 |
| labs | C89 | 计算 long 的绝对值 |
| llabs | C99 | 计算 long long 绝对值 |
| div | C89 | 计算 int 除法,同时得到商和余数 |
| ldiv | C89 | 计算 long 除法,同时得到商和余数 |
| lldiv | C99 | 计算 long long 除法,同时得到商和余数 |
| 字符串转换 | 标准 | 说明 |
|---|---|---|
| atof | C89 | 字符串转 double 浮点数 |
| atoi | C89 | 字符串转 int 整数 |
| atol | C89 | 字符串转 long 整数 |
| atoll | C89 | 字符串转 long long 整数 |
| strtof | C99 | 字符串转 float 浮点数 |
| strtod | C99 | 字符串转 double 浮点数 |
| strtold | C99 | 字符串转 long double 浮点数 |
| strtol | C99 | 字符串转 long 整数 |
| strtoll | C99 | 字符串转 long long 整数 |
| strtoul | C99 | 字符串转 unsigned long 整数 |
| strtoull | C99 | 字符串转 unsigned long long 整数 |
| 操作系统 | 标准 | 说明 |
|---|---|---|
| system | C89 | 执行命令 |
#推荐阅读
#示例
#include <stdio.h>
#include <stdlib.h> // 包含stdlib.h头文件
#include <time.h> // 用于time()函数
// 定义比较函数
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main(void) {
// 1. 内存分配示例
printf("=== 内存分配示例 ===\n");
int *arr = (int*)malloc(5 * sizeof(int)); // 分配5个int大小的内存
if (arr == NULL) {
printf("内存分配失败!\n");
return 1;
} else {
printf("内存分配成功!\n");
}
// 2. 随机数生成示例
printf("\n=== 随机数生成示例 ===\n");
srand(time(0)); // 用当前时间初始化随机数种子
printf("随机数[0,99]: %d\n", rand() % 100);
// 3. 字符串转换示例
printf("\n=== 字符串转换示例 ===\n");
char num_str[] = "12345";
int num = atoi(num_str); // 字符串转整数
printf("字符串\"%s\"转换为整数: %d\n", num_str, num);
// 4. 环境变量示例
printf("\n=== 环境变量示例 ===\n");
char *path = getenv("PATH"); // 获取PATH环境变量
if (path != NULL) {
printf("PATH环境变量: %s\n", path);
} else {
printf("PATH环境变量未找到\n");
}
// 5. 排序示例 (qsort)
printf("\n=== 排序示例 ===\n");
for (int i = 0; i < 5; i++) {
arr[i] = rand() % 100; // 给数组赋随机值
printf("arr[%d] = %d\n", i, arr[i]);
}
qsort(arr, 5, sizeof(int), compare); // 排序数组
printf("排序后:\n");
for (int i = 0; i < 5; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}
// 6. 退出程序
free(arr); // 释放分配的内存
printf("\n程序正常退出\n");
exit(EXIT_SUCCESS); // 等同于return 0
}
运行结果:
=== 内存分配示例 ===
内存分配成功!
=== 随机数生成示例 ===
随机数[0,99]: 92
=== 字符串转换示例 ===
字符串"12345"转换为整数: 12345
=== 环境变量示例 ===
PATH环境变量: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
=== 排序示例 ===
arr[0] = 74
arr[1] = 0
arr[2] = 64
arr[3] = 73
arr[4] = 28
排序后:
arr[0] = 0
arr[1] = 28
arr[2] = 64
arr[3] = 73
arr[4] = 74
程序正常退出